﻿#include "page12.h"
#include "AddEmployeeDialog.h"
#include "databaseManager.h"
#include <QSqlRecord>
#include<QVBoxLayout>

Page12::Page12(QWidget* parent) : QWidget(parent)
{
    // 设置窗口大小
    setFixedSize(1280, 720);
    //设置背景
    QPixmap background(":new/prefix1/bg.jpg");
    QLabel* backgroundLabel = new QLabel(this);
    backgroundLabel->setPixmap(background.scaled(this->size())); // 缩放背景图片以适应窗口大小

    backgroundLabel->setGeometry(0, 0, this->width(), this->height());
    backgroundLabel->lower();

    // 设置按钮的初始Y轴位置
    int yPos = 222;

    // Assuming you have a QIcon object created from your image file
    QIcon icon1(":new/prefix1/order.jpg");

    // Create the QPushButton and set its properties
    orderButton = new QPushButton(this);
    orderButton->setIcon(icon1);  // Set the icon
    orderButton->setIconSize(QSize(260,71));  // Set the icon size
    orderButton->setFlat(true);  // Make the button flat (no background)
    orderButton->setFixedSize(260,71);  // Set the fixed size of the button
    orderButton->setGeometry(1, yPos, 260,71);
    connect(orderButton, &QPushButton::clicked, this, [this](){
        emit orderRequested();
    });

    // 调整下一个按钮的Y轴位置
    yPos += 68;

    // 创建并设置生产按钮
    QIcon icon2(":new/prefix1/production.jpg");
    productionButton = new QPushButton("", this);
    productionButton->setIcon(icon2);  // Set the icon
    productionButton->setIconSize(QSize(260,71));  // Set the icon size
    productionButton->setFlat(true);  // Make the button flat (no background)
    productionButton->setFixedSize(260,71);  // Set the fixed size of the button
    productionButton->setGeometry(1, yPos, 260,71);

    connect(productionButton, &QPushButton::clicked, this, [this]() {
        emit productionRequested();
    });

    // 调整下一个按钮的Y轴位置
    yPos += 68;

    // 创建并设置财务按钮
    QIcon icon3(":new/prefix1/finance.jpg");
    financeButton = new QPushButton("", this);
    financeButton->setIcon(icon3);  // Set the icon
    financeButton->setIconSize(QSize(260,71));  // Set the icon size
    financeButton->setFlat(true);  // Make the button flat (no background)
    financeButton->setFixedSize(260,71);  // Set the fixed size of the button
    financeButton->setGeometry(1, yPos, 260,71);

    connect(financeButton, &QPushButton::clicked, this, [this]() {
        emit financeRequested();
    });

    // 调整下一个按钮的Y轴位置
    yPos += 68;

    // 创建并设置库存按钮
    QIcon icon4(":new/prefix1/warehouse.jpg");
    warehouseButton = new QPushButton("", this);
    warehouseButton->setIcon(icon4);  // Set the icon
    warehouseButton->setIconSize(QSize(260,71));  // Set the icon size
    warehouseButton->setFlat(true);  // Make the button flat (no background)
    warehouseButton->setFixedSize(260,71);  // Set the fixed size of the button
    warehouseButton->setGeometry(1, yPos, 260,71);

    connect(warehouseButton, &QPushButton::clicked, this, [this]() {
        emit storeRequested();
    });



    yPos += 68;

    QIcon icon6(":new/prefix1/operationGuide.jpg");
    QIcon icon16(":new/prefix1/operationGuide2.jpg");
    helpButton = new QPushButton("", this);
    helpButton->setIcon(icon6);  // Set the icon
    helpButton->setIconSize(QSize(260, 71));  // Set the icon size
    helpButton->setFlat(true);  // Make the button flat (no background)
    helpButton->setFixedSize(260, 71);  // Set the fixed size of the button
    helpButton->setGeometry(1, yPos, 260, 71);

    connect(helpButton, &QPushButton::clicked, this, [this]() {
        emit pageRequested10();
    });

    connect(helpButton, &QPushButton::pressed, this, [this, icon16]() {
         helpButton->setIcon(icon16);
    });
    connect(helpButton, &QPushButton::released, this, [this, icon6]() {
        helpButton->setIcon(icon6);
        emit pageRequested10();  // Emit the signal after the button is released
    });


    //连接按钮
         yPos += 68;
        QIcon icon7(":new/prefix1/connect.jpg");
        QIcon icon17(":new/prefix1/connect2.jpg");
        connectButton = new QPushButton("", this);
        connectButton->setIcon(icon7);  // Set the icon
        connectButton->setIconSize(QSize(260, 71));  // Set the icon size
        connectButton->setFlat(true);  // Make the button flat (no background)
        connectButton->setFixedSize(260, 71);  // Set the fixed size of the button
        connectButton->setGeometry(1, yPos, 260, 71);

        connect(connectButton, &QPushButton::clicked, this, [this]() {
            emit pageRequested13();
        });

        connect(connectButton, &QPushButton::pressed, this, [this, icon17]() {
             connectButton->setIcon(icon17);
        });
        connect(connectButton, &QPushButton::released, this, [this, icon7]() {
            connectButton->setIcon(icon7);
            emit pageRequested13();  // Emit the signal after the button is released
        });

        yPos += 68;

        // 创建并设置添加员工按钮
        QIcon icon5(":new/prefix1/tianjiayuangong01.jpg");
        QIcon icon15(":new/prefix1/tianjiayuangong02.jpg");
        addEmployeeButton = new QPushButton("", this);
        addEmployeeButton->setIcon(icon15);  // Set the icon
        addEmployeeButton->setIconSize(QSize(260, 71));  // Set the icon size
        addEmployeeButton->setFlat(true);  // Make the button flat (no background)
        addEmployeeButton->setFixedSize(260, 71);  // Set the fixed size of the button
        addEmployeeButton->setGeometry(1, yPos, 260, 71);

        connect(addEmployeeButton, &QPushButton::clicked, this, [this]() {
            emit addEmployeeRequested();
        });
    connect(addEmployeeButton, &QPushButton::pressed, this, [this, icon5]() {
         addEmployeeButton->setIcon(icon5);
    });
    connect(addEmployeeButton, &QPushButton::released, this, [this, icon15]() {
        addEmployeeButton->setIcon(icon15);
        emit storeRequested();  // Emit the signal after the button is released
    });

    EmployeeButton = new QPushButton(u8"", this);
    EmployeeButton->setGeometry(265,60,264,75); // 调整此位置以适应屏幕
    EmployeeButton->setStyleSheet("QPushButton {"
                             "border: none; "
                             "background-image: url(:new/prefix1/gongsiyuangong02.jpg); "
                             "background-repeat: no-repeat; "
                             "background-position: center; }");

    connect(EmployeeButton, &QPushButton::pressed, this, [this]() {
        EmployeeButton->setStyleSheet("QPushButton {"
                                 " border: none; "
                                 "background-image: url(:/new/prefix1/gongsiyuangong.jpg); "
                                 "background-repeat: no-repeat; "
                                 "background-position: center; }");
    });
    connect(EmployeeButton, &QPushButton::released, this, [this]() {
        EmployeeButton->setStyleSheet("QPushButton {"
                                 " border: none; "
                                 "background-image: url(:/new/prefix1/gongsiyuangong02.jpg); "
                                 "background-repeat: no-repeat; "
                                 "background-position: center; }");
    });

    addButton = new QPushButton(u8"", this);
    addButton->setGeometry(530,60,264,75); // 调整此位置以适应屏幕
    addButton->setStyleSheet("QPushButton {"
                             " border: none; "
                             "background-image: url(:new/prefix1/tianjiayuangongDialog02.jpg); "
                             "background-repeat: no-repeat; "
                             "background-position: center; }");

    connect(addButton, &QPushButton::pressed, this, [this]() {
        addButton->setStyleSheet("QPushButton {"
                                 " border: none; "
                                 "background-image: url(:/new/prefix1/tianjiayuangongDialog.jpg); "
                                 "background-repeat: no-repeat; "
                                 "background-position: center; }");
    });

    // Connect released signal to change the background image back to shouzhibiao.jpg
    connect(addButton, &QPushButton::released, this, [this]() {
        addButton->setStyleSheet("QPushButton {"
                                 " border: none; "
                                 "background-image: url(:/new/prefix1/tianjiayuangongDialog02.jpg); "
                                 "background-repeat: no-repeat; "
                                 "background-position: center; }");
    });

    connect(addButton, &QPushButton::clicked, this, &Page12::showAddEmployeeDialog);

    // 设置中间按钮位置
    connect(addButton, &QPushButton::clicked, this, [this]() {
        emit addEmployeeRequested();
    });



    // 创建返回按钮
        frontButton = new QPushButton(u8"", this);
        frontButton->setGeometry(1050,0,170,55); // 调整此位置以适应屏幕
        frontButton->setStyleSheet("QPushButton {"
                                 " border: none; "
                                 "background-image: url(:new/prefix1/tuichudenglu.jpg); "
                                 "background-repeat: no-repeat; "
                                 "background-position: center; }");


        connect(frontButton, &QPushButton::pressed, this, [this]() {
            frontButton->setStyleSheet("QPushButton {"
                                     " border: none; "
                                     "background-image: url(:/new/prefix1/tuichudenglu2.jpg); "
                                     "background-repeat: no-repeat; "
                                     "background-position: center; }");
        });
        connect(frontButton, &QPushButton::released, this, [this]() {
            frontButton->setStyleSheet("QPushButton {"
                                     " border: none; "
                                     "background-image: url(:/new/prefix1/tuichudenglu.jpg); "
                                     "background-repeat: no-repeat; "
                                     "background-position: center; }");
        });

   connect(frontButton, &QPushButton::clicked, this, &Page12::onFrontButtonClicked);
   QVBoxLayout* backLayout = new QVBoxLayout(this);
   setLayout(backLayout);

    // Table widget，放大后放置在屏幕中间偏右侧
    tableWidget = new QTableWidget(this);

    // 表格宽度为屏幕宽度的60%，高度为屏幕高度的60%
    tableWidget->setGeometry(265,135, 1010,590);
    tableWidget->setRowCount(20); // 示例行数
    tableWidget->setColumnCount(4); // 示例列数
    QStringList headTable = { u8"员工编号",u8"账号",u8"密码",u8"职位" };
    tableWidget->setHorizontalHeaderLabels(headTable);
    tableWidget->verticalHeader()->setHidden(true);       //隐藏行标题
    tableWidget->horizontalHeader()->setSectionResizeMode(QHeaderView::Stretch);

}

void Page12::financeHide()
{
    financeButton->hide();
}

void Page12::showAddEmployeeDialog()
{
    AddEmployeeDialog dialog(this);
    if (dialog.exec() == QDialog::Accepted) {
        QString account = dialog.getAccountLineEdit()->text();
        QString password = dialog.getPasswordLineEdit()->text();
        QString position = dialog.getPositionComboBox()->currentText();

        // 在此处添加处理新增员工的逻辑，例如将数据保存到数据库或列表中
        DatabaseManager dbManager;
        if (dbManager.insertAuthentication(account, password, position)) {
            //qDEbug() << "New employee added successfully.";
            initializeEmployeeTable();
        } else {
            //qDEbug() << "Failed to add new employee.";
        }
    }
}

void Page12::initializeEmployeeTable() {
    QSqlTableModel* authenticationModel = DatabaseManager::instance().getAuthenticationModel();
    tableWidget->setRowCount(authenticationModel->rowCount());
    tableWidget->setColumnCount(authenticationModel->columnCount());

    QStringList headers;
    for (int column = 0; column < authenticationModel->columnCount(); ++column) {
        headers << authenticationModel->headerData(column, Qt::Horizontal).toString();
    }
    tableWidget->setHorizontalHeaderLabels(headers);

    for (int row = 0; row < authenticationModel->rowCount(); ++row) {
        for (int column = 0; column < authenticationModel->columnCount(); ++column) {
            QTableWidgetItem *item = new QTableWidgetItem(authenticationModel->record(row).value(column).toString());
            tableWidget->setItem(row, column, item);
        }
    }
}

void Page12::signuphide() {
    addEmployeeButton->hide();
}
void Page12::onFrontButtonClicked()
{
    QMessageBox msgBox;
    msgBox.setText("确定退出登录吗?");
    msgBox. setWindowTitle("退出登录");
    msgBox.setStandardButtons(QMessageBox::Ok | QMessageBox::Cancel);
    msgBox.button(QMessageBox::Ok)->setText("确认");
    msgBox.button(QMessageBox::Cancel)->setText("取消");
    msgBox.setStyleSheet(
        "QMessageBox {"
        "  background-color: #FFFFFF;"
        "}"
        "QMessageBox QLabel {"
        "  font-size: 18px;"
        "  font-weight: bold;"
        "  color: black;"
        "}"
        "QMessageBox QPushButton {"
        "  font-size: 18px;"
        "  font-weight: bold;"
        "  border: 2px solid #E0E0E0;"
        "  border-radius: 20px;"
        "  padding: 10px;"
        "  background-color: #0093D1;"
        "  color: white;"
        "}"
    );

    if (msgBox.exec() == QMessageBox::Ok) {
        emit pageRequested1();
    }
}
